Author: chris.laprun(a)jboss.com
Date: 2008-07-01 18:16:51 -0400 (Tue, 01 Jul 2008)
New Revision: 11245
Modified:
branches/JBoss_Portal_Branch_2_6/core-wsrp/src/main/org/jboss/portal/wsrp/admin/ui/ConsumerManagerBean.java
branches/JBoss_Portal_Branch_2_6/core-wsrp/src/resources/portal-wsrp-admin-war/WEB-INF/classes/WSRPConfigurationResource.properties
branches/JBoss_Portal_Branch_2_6/core-wsrp/src/resources/portal-wsrp-admin-war/WEB-INF/classes/WSRPConfigurationResource_fr.properties
branches/JBoss_Portal_Branch_2_6/core-wsrp/src/resources/portal-wsrp-admin-war/WEB-INF/jsf/consumers/editConsumer.xhtml
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/consumer/RegistrationInfoTestCase.java
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/consumer/ProducerInfo.java
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/consumer/RefreshResult.java
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/consumer/RegistrationInfo.java
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/consumer/RegistrationProperty.java
Log:
- Re-factored RefreshResult as it was mixing concerns by providing user-oriented
messages.
- More internalization.
- Started to use ui:repeat instead of c:forEach as it's supposed to be better.
- Registration management fails with facelets 1.1.15-B1 but works OK with facelets
1.1.11.
- Status messages don't appear anymore for some reason (regardless of facelets
version) with a warning on console.
Modified:
branches/JBoss_Portal_Branch_2_6/core-wsrp/src/main/org/jboss/portal/wsrp/admin/ui/ConsumerManagerBean.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/core-wsrp/src/main/org/jboss/portal/wsrp/admin/ui/ConsumerManagerBean.java 2008-07-01
22:16:24 UTC (rev 11244)
+++
branches/JBoss_Portal_Branch_2_6/core-wsrp/src/main/org/jboss/portal/wsrp/admin/ui/ConsumerManagerBean.java 2008-07-01
22:16:51 UTC (rev 11245)
@@ -51,6 +51,10 @@
static final String EXPECTED_REG_INFO_KEY = "expectedRegistrationInfo";
private static final String NO_CONSUMER =
"bean_consumermanager_no_consumer";
private static final String INVALID_NEW_CONSUMER_NAME =
"bean_consumermanager_invalid_new_consumer_name";
+ private static final String REFRESH_BYPASSED =
"bean_consumermanager_refresh_bypassed";
+ private static final String REFRESH_SUCCESS =
"bean_consumermanager_refresh_success";
+ private static final String REFRESH_FAILURE =
"bean_consumermanager_refresh_failure";
+ private static final String REFRESH_EXCEPTION =
"bean_consumermanager_refresh_exception";
public ConsumerRegistry getRegistry()
{
@@ -231,7 +235,7 @@
{
RefreshResult result = consumer.refresh(true);
-
+ String status = getLocalizationKeyFrom(result);
if (result.hasIssues())
{
// create the expected registration info and make it available
@@ -239,7 +243,7 @@
expected.refresh(result.getServiceDescription(), consumer.getProducerId(),
true, true, true);
setExpectedRegistrationInfo(expected);
- beanContext.createErrorMessage(result.getStatus());
+ beanContext.createErrorMessage(status);
// refresh had issues, we should deactivate this consumer
registry.deactivateConsumerWith(consumer.getProducerId());
@@ -256,7 +260,7 @@
registry.deactivateConsumerWith(consumer.getProducerId());
}
- beanContext.createMessage(BeanContext.STATUS, result.getStatus(),
beanContext.getInfoSeverity()); // todo: localize status!
+ beanContext.createInfoMessage(status);
}
return result;
}
@@ -267,6 +271,28 @@
}
}
+ private String getLocalizationKeyFrom(RefreshResult result)
+ {
+ RefreshResult.Status status = result.getStatus();
+ if(RefreshResult.Status.BYPASSED.equals(status))
+ {
+ return REFRESH_BYPASSED;
+ }
+ else if (RefreshResult.Status.SUCCESS.equals(status))
+ {
+ return REFRESH_SUCCESS;
+ }
+ else if (RefreshResult.Status.FAILURE.equals(status))
+ {
+ // todo: extract information from registration result to be more precise
+ return REFRESH_FAILURE;
+ }
+ else
+ {
+ return REFRESH_EXCEPTION;
+ }
+ }
+
RefreshResult refresh(WSRPConsumer consumer)
{
RefreshResult result = internalRefresh(consumer);
@@ -323,4 +349,4 @@
{
beanContext.createErrorMessage(NO_CONSUMER);
}
-}
\ No newline at end of file
+}
Modified:
branches/JBoss_Portal_Branch_2_6/core-wsrp/src/resources/portal-wsrp-admin-war/WEB-INF/classes/WSRPConfigurationResource.properties
===================================================================
---
branches/JBoss_Portal_Branch_2_6/core-wsrp/src/resources/portal-wsrp-admin-war/WEB-INF/classes/WSRPConfigurationResource.properties 2008-07-01
22:16:24 UTC (rev 11244)
+++
branches/JBoss_Portal_Branch_2_6/core-wsrp/src/resources/portal-wsrp-admin-war/WEB-INF/classes/WSRPConfigurationResource.properties 2008-07-01
22:16:51 UTC (rev 11245)
@@ -150,8 +150,12 @@
# ConsumerManagerBean
bean_consumermanager_invalid_new_consumer_name = Need a non-null, non-empty name for the
new consumer!
bean_consumermanager_no_consumer = No consumer was selected!
+bean_consumermanager_refresh_bypassed = Refresh was not necessary.
+bean_consumermanager_refresh_success = Refresh was successful.
+bean_consumermanager_refresh_failure = Refresh failed (probably because the registration
information was not valid).
+bean_consumermanager_refresh_exception = An unexpected error occurred.
# ProducerBean
bean_producer_regpolicy_unset = RegistrationPolicy unset
bean_producer_cannot_save = Couldn't save producer configuration. Cause: {0}
-bean_producer_cannot_reload = Couldn't reload producer configuration. Cause: {0}
\ No newline at end of file
+bean_producer_cannot_reload = Couldn't reload producer configuration. Cause: {0}
Modified:
branches/JBoss_Portal_Branch_2_6/core-wsrp/src/resources/portal-wsrp-admin-war/WEB-INF/classes/WSRPConfigurationResource_fr.properties
===================================================================
---
branches/JBoss_Portal_Branch_2_6/core-wsrp/src/resources/portal-wsrp-admin-war/WEB-INF/classes/WSRPConfigurationResource_fr.properties 2008-07-01
22:16:24 UTC (rev 11244)
+++
branches/JBoss_Portal_Branch_2_6/core-wsrp/src/resources/portal-wsrp-admin-war/WEB-INF/classes/WSRPConfigurationResource_fr.properties 2008-07-01
22:16:51 UTC (rev 11245)
@@ -126,4 +126,8 @@
producer_config_save=Sauvegarder
producer_config_sd_requires_reg=L'acc\u00e8s \u00e0 la description compl\u00e8te des
services requiert l'enregistrement.
producer_config_strict=Utiliser la validation WSRP stricte.
-producer_config_title=Configuration producteur
\ No newline at end of file
+producer_config_title=Configuration producteur
+bean_consumermanager_refresh_bypassed=Le rafra\u00eechissement n'\u00e9tait pas
requis.
+bean_consumermanager_refresh_exception=Une erreur inattendue s'est produite.
+bean_consumermanager_refresh_failure=Le rafra\u00eechissement a \u00e9chou\u00e9
(probablement \u00e0 cause d'informations d'enregistrement non valides)
+bean_consumermanager_refresh_success=Le rafra\u00eechissement a r\u00e9ussi.
\ No newline at end of file
Modified:
branches/JBoss_Portal_Branch_2_6/core-wsrp/src/resources/portal-wsrp-admin-war/WEB-INF/jsf/consumers/editConsumer.xhtml
===================================================================
---
branches/JBoss_Portal_Branch_2_6/core-wsrp/src/resources/portal-wsrp-admin-war/WEB-INF/jsf/consumers/editConsumer.xhtml 2008-07-01
22:16:24 UTC (rev 11244)
+++
branches/JBoss_Portal_Branch_2_6/core-wsrp/src/resources/portal-wsrp-admin-war/WEB-INF/jsf/consumers/editConsumer.xhtml 2008-07-01
22:16:51 UTC (rev 11245)
@@ -74,24 +74,23 @@
</td>
</tr>
<c:if test="#{consumer.localInfoPresent}">
-<tr>
- <th>#{i18n.edit_consumer_registration}</th>
- <td>
- <c:choose>
- <c:when test="#{consumer.localInfoPresent}">
- <h3
class="portlet-area-header">#{i18n.edit_consumer_registration_current}</h3>
- <h:panelGroup styleClass="portlet-area-body">
- <c:choose>
- <c:when test="#{!empty
consumer.producerInfo.registrationInfo.registrationProperties}">
- <table class="registration-prop-table #{consumer.active ?
'active' : 'inactive'}">
- <tr>
- <th
class="nameColumn">#{i18n.edit_consumer_prop_name}</th>
- <th
class="descColumn">#{i18n.edit_consumer_prop_desc}</th>
- <th>#{i18n.edit_consumer_prop_value}</th>
- </tr>
- <c:forEach
items="#{consumer.producerInfo.registrationInfo.registrationProperties}"
- var="prop">
- <tr title="#{prop.description.label.value}">
+ <tr>
+ <th>#{i18n.edit_consumer_registration}</th>
+ <td>
+ <c:choose>
+ <c:when test="#{consumer.localInfoPresent}">
+ <h3
class="portlet-area-header">#{i18n.edit_consumer_registration_current}</h3>
+ <h:panelGroup styleClass="portlet-area-body">
+ <c:choose>
+ <c:when test="#{!empty
consumer.producerInfo.registrationInfo.registrationProperties}">
+ <table class="registration-prop-table #{consumer.active ?
'active' : 'inactive'}">
+ <tr>
+ <th
class="nameColumn">#{i18n.edit_consumer_prop_name}</th>
+ <th
class="descColumn">#{i18n.edit_consumer_prop_desc}</th>
+ <th>#{i18n.edit_consumer_prop_value}</th>
+ </tr>
+ <tr jsfc="ui:repeat"
value="#{consumer.producerInfo.registrationInfo.registrationProperties}"
+ var="prop"
title="#{prop.description.label.value}">
<td>#{prop.name}</td>
<td>#{prop.description.label.value}</td>
<td>
@@ -102,49 +101,11 @@
rendered="#{prop.determinedInvalid}"/>
</td>
</tr>
- </c:forEach>
- </table>
- <h:commandLink action="#{consumer.update}"
-
value="#{i18n.edit_consumer_registration_update_props}"
- rendered="#{consumer.registered}"
- styleClass="portlet-form-button
portlet-section-buttonrow"/>
- </c:when>
- <c:otherwise>
- #{i18n.edit_consumer_registration_no_props}
- </c:otherwise>
- </c:choose>
- <h:commandLink action="#{consumer.modifyRegistration}"
value="#{i18n.edit_consumer_registration_modify}"
-
rendered="#{consumer.registrationLocallyModified}"
-
title="#{i18n.edit_consumer_registration_modify_title}"
- styleClass="portlet-form-button
portlet-section-buttonrow"/>
- <br style="clear:both;"/>
- </h:panelGroup>
-
- <br/>
-
- <c:if test="#{consumer.registrationModified}">
- <h3
class="portlet-area-header">#{i18n.edit_consumer_registration_expected}</h3>
- <h:panelGroup styleClass="portlet-area-body">
- <c:choose>
- <c:when test="#{!empty
consumer.expectedRegistrationInfo.registrationProperties}">
- <table class="registration-prop-table #{consumer.active ?
'active' : 'inactive'}">
- <tr>
- <th
class="nameColumn">#{i18n.edit_consumer_prop_name}</th>
- <th
class="descColumn">#{i18n.edit_consumer_prop_desc}</th>
- <th>#{i18n.edit_consumer_prop_value}</th>
- </tr>
- <c:forEach
items="#{consumer.expectedRegistrationInfo.registrationProperties}"
var="prop">
- <tr
title="#{prop.description.label.value}">
- <td>#{prop.name}</td>
- <td>#{prop.description.label.value}</td>
- <td>
- <h:inputText value="#{prop.value}"
size="50"/>
- <h:outputText
styleClass="portlet-msg-error" value="#{prop.status}"
-
rendered="#{prop.determinedInvalid}"/>
- </td>
- </tr>
- </c:forEach>
</table>
+ <h:commandLink action="#{consumer.update}"
+
value="#{i18n.edit_consumer_registration_update_props}"
+ rendered="#{consumer.registered}"
+ styleClass="portlet-form-button
portlet-section-buttonrow"/>
</c:when>
<c:otherwise>
#{i18n.edit_consumer_registration_no_props}
@@ -152,31 +113,67 @@
</c:choose>
<h:commandLink action="#{consumer.modifyRegistration}"
value="#{i18n.edit_consumer_registration_modify}"
+
rendered="#{consumer.registrationLocallyModified}"
title="#{i18n.edit_consumer_registration_modify_title}"
styleClass="portlet-form-button
portlet-section-buttonrow"/>
<br style="clear:both;"/>
</h:panelGroup>
- </c:if>
- </c:when>
- <c:when test="#{consumer.registrationChecked and
!consumer.registrationRequired}">
- #{i18n.edit_consumer_no_registration}
- </c:when>
- </c:choose>
- </td>
-</tr>
-<c:if test="#{!empty
consumer.producerInfo.registrationInfo.registrationHandle}">
- <tr>
- <th>#{i18n.edit_consumer_registration_context}</th>
- <td id="handle">
- #{i18n.edit_consumer_registration_context_handle} <h:outputText
-
value="#{consumer.producerInfo.registrationInfo.registrationHandle}"/>
- <h:commandLink action="confirmEraseRegistration"
value="#{i18n.edit_consumer_registration_context_erase}"
-
title="#{i18n.edit_consumer_registration_context_erase_title}"
- styleClass="portlet-form-button"/>
+
+ <br/>
+
+ <c:if test="#{consumer.registrationModified}">
+ <h3
class="portlet-area-header">#{i18n.edit_consumer_registration_expected}</h3>
+ <h:panelGroup styleClass="portlet-area-body">
+ <c:choose>
+ <c:when test="#{!empty
consumer.expectedRegistrationInfo.registrationProperties}">
+ <table class="registration-prop-table
#{consumer.active ? 'active' : 'inactive'}">
+ <tr>
+ <th
class="nameColumn">#{i18n.edit_consumer_prop_name}</th>
+ <th
class="descColumn">#{i18n.edit_consumer_prop_desc}</th>
+ <th>#{i18n.edit_consumer_prop_value}</th>
+ </tr>
+ <tr jsfc="ui:repeat"
value="#{consumer.expectedRegistrationInfo.registrationProperties}"
+ var="prop"
title="#{prop.description.label.value}">
+ <td>#{prop.name}</td>
+ <td>#{prop.description.label.value}</td>
+ <td>
+ <h:inputText value="#{prop.value}"
size="50"/>
+ <h:outputText
styleClass="portlet-msg-error" value="#{prop.status}"
+
rendered="#{prop.determinedInvalid}"/>
+ </td>
+ </tr>
+ </table>
+ </c:when>
+ <c:otherwise>
+ #{i18n.edit_consumer_registration_no_props}
+ </c:otherwise>
+ </c:choose>
+ <h:commandLink action="#{consumer.modifyRegistration}"
+
value="#{i18n.edit_consumer_registration_modify}"
+
title="#{i18n.edit_consumer_registration_modify_title}"
+ styleClass="portlet-form-button
portlet-section-buttonrow"/>
+ <br style="clear:both;"/>
+ </h:panelGroup>
+ </c:if>
+ </c:when>
+ <c:when test="#{consumer.registrationChecked and
!consumer.registrationRequired}">
+ #{i18n.edit_consumer_no_registration}
+ </c:when>
+ </c:choose>
</td>
</tr>
+ <c:if test="#{!empty
consumer.producerInfo.registrationInfo.registrationHandle}">
+ <tr>
+ <th>#{i18n.edit_consumer_registration_context}</th>
+ <td id="handle">
+ #{i18n.edit_consumer_registration_context_handle} <h:outputText
value="#{consumer.producerInfo.registrationInfo.registrationHandle}"/>
+ <h:commandLink action="confirmEraseRegistration"
value="#{i18n.edit_consumer_registration_context_erase}"
+
title="#{i18n.edit_consumer_registration_context_erase_title}"
+ styleClass="portlet-form-button"/>
+ </td>
+ </tr>
+ </c:if>
</c:if>
-</c:if>
<tr>
<th/>
<td class="portlet-section-buttonrow">
@@ -190,4 +187,4 @@
</table>
</h:form>
</ui:define>
-</ui:decorate>
+</ui:decorate>
\ No newline at end of file
Modified:
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/consumer/RegistrationInfoTestCase.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/consumer/RegistrationInfoTestCase.java 2008-07-01
22:16:24 UTC (rev 11244)
+++
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/consumer/RegistrationInfoTestCase.java 2008-07-01
22:16:51 UTC (rev 11245)
@@ -139,20 +139,20 @@
RefreshResult result = info.refresh(sd, producerId, true, false, false);
assertNotNull(result);
assertFalse(result.hasIssues());
- assertTrue(info.isConsistentWithProducerExpectations().booleanValue());
- assertFalse(info.isRegistrationRequired().booleanValue());
+ assertTrue(info.isConsistentWithProducerExpectations());
+ assertFalse(info.isRegistrationRequired());
assertTrue(info.isRegistrationDeterminedNotRequired());
assertFalse(info.isRegistrationDeterminedRequired());
- assertTrue(info.isRegistrationValid().booleanValue());
+ assertTrue(info.isRegistrationValid());
result = info.refresh(sd, producerId, false, false, false);
assertNotNull(result);
assertFalse(result.hasIssues());
- assertTrue(info.isConsistentWithProducerExpectations().booleanValue());
- assertFalse(info.isRegistrationRequired().booleanValue());
+ assertTrue(info.isConsistentWithProducerExpectations());
+ assertFalse(info.isRegistrationRequired());
assertTrue(info.isRegistrationDeterminedNotRequired());
assertFalse(info.isRegistrationDeterminedRequired());
- assertTrue(info.isRegistrationValid().booleanValue());
+ assertTrue(info.isRegistrationValid());
}
public void testRefreshRegistrationDefaultRegistrationNoLocalInfo()
@@ -165,10 +165,10 @@
createServiceDescription(true, 0), producerId, true, false, false);
assertNotNull(result);
assertFalse(result.hasIssues());
- assertTrue(info.isRegistrationRequired().booleanValue());
+ assertTrue(info.isRegistrationRequired());
assertTrue(info.isRegistrationDeterminedRequired());
assertFalse(info.isRegistrationDeterminedNotRequired());
- assertFalse(info.isRegistrationValid().booleanValue());
+ assertFalse(info.isRegistrationValid());
}
public void testRefreshRegistrationDefaultRegistrationExtraLocalInfo()
@@ -180,9 +180,7 @@
createServiceDescription(true, 0), producerId, false, false, false);
assertNotNull(result);
assertTrue(result.hasIssues());
- String status = result.getStatus();
- assertNotNull(status);
- assertTrue(status.indexOf("foo") != -1);
+ assertEquals(RefreshResult.Status.FAILURE, result.getStatus());
assertEquals(1, info.getRegistrationProperties().size());
assertEquals(1, result.getRegistrationProperties().size());
@@ -192,7 +190,7 @@
RegistrationProperty prop = (RegistrationProperty)regProps.get("foo");
assertNotNull(prop);
assertEquals("bar", prop.getValue());
- assertTrue(prop.isInvalid().booleanValue());
+ assertTrue(prop.isInvalid());
assertEquals(RegistrationProperty.INEXISTENT_STATUS, prop.getStatus());
}
@@ -204,9 +202,7 @@
RegistrationInfo.RegistrationRefreshResult result = info.refresh(sd, producerId,
false, false, false);
assertNotNull(result);
assertTrue(result.hasIssues());
- String status = result.getStatus();
- assertNotNull(status);
- assertTrue(status.indexOf("prop0") != -1 &&
status.indexOf("prop1") != -1);
+ assertEquals(RefreshResult.Status.FAILURE, result.getStatus());
assertEquals(0, info.getRegistrationProperties().size());
assertEquals(2, result.getRegistrationProperties().size());
@@ -215,8 +211,12 @@
RegistrationProperty prop = (RegistrationProperty)regProps.get("prop0");
assertNotNull(prop);
- assertTrue(prop.isInvalid().booleanValue());
+ assertTrue(prop.isInvalid());
assertEquals(RegistrationProperty.MISSING_STATUS, prop.getStatus());
+ prop = (RegistrationProperty)regProps.get("prop1");
+ assertNotNull(prop);
+ assertTrue(prop.isInvalid());
+ assertEquals(RegistrationProperty.MISSING_STATUS, prop.getStatus());
}
public void testRefreshRegistrationRegistrationMergeWithLocalInfo()
@@ -231,13 +231,13 @@
RegistrationProperty prop = info.getRegistrationProperty("prop0");
assertNotNull(prop);
assertNull(prop.getValue());
- assertTrue(prop.isInvalid().booleanValue());
+ assertTrue(prop.isInvalid());
assertEquals(RegistrationProperty.MISSING_VALUE_STATUS, prop.getStatus());
prop = info.getRegistrationProperty("prop1");
assertNotNull(prop);
assertNull(prop.getValue());
- assertTrue(prop.isInvalid().booleanValue());
+ assertTrue(prop.isInvalid());
assertEquals(RegistrationProperty.MISSING_VALUE_STATUS, prop.getStatus());
assertEquals(2, info.getRegistrationProperties().size());
assertEquals(2, result.getRegistrationProperties().size());
@@ -251,28 +251,28 @@
RefreshResult result = info.refresh(createServiceDescription(true, 0), producerId,
false, false, false);
assertNotNull(result);
assertFalse(result.hasIssues());
- assertFalse(info.isRegistrationValid().booleanValue());
+ assertFalse(info.isRegistrationValid());
// Modifying a property renders the info dirty and hence should be refreshed
info.setRegistrationPropertyValue("foo", "bar");
result = info.refresh(createServiceDescription(true, 0), producerId, false, false,
false);
assertTrue(result.hasIssues());
- assertFalse(info.isRegistrationValid().booleanValue());
+ assertFalse(info.isRegistrationValid());
info.removeRegistrationProperty("foo");
result = info.refresh(createServiceDescription(true, 0), producerId, false, false,
false);
assertFalse(result.hasIssues());
- assertFalse(info.isRegistrationValid().booleanValue());
+ assertFalse(info.isRegistrationValid());
// producer has changed but we're not forcing refresh so registration should
still be invalid
result = info.refresh(createServiceDescription(false, 0), producerId, false, false,
false);
assertFalse(result.hasIssues());
- assertFalse(info.isRegistrationValid().booleanValue());
+ assertFalse(info.isRegistrationValid());
// force refresh, registration should now be valid
result = info.refresh(createServiceDescription(false, 0), producerId, false, true,
false);
assertFalse(result.hasIssues());
- assertTrue(info.isRegistrationValid().booleanValue());
+ assertTrue(info.isRegistrationValid());
}
public void testSetRegistrationContext()
@@ -286,10 +286,10 @@
assertNotNull(registrationContext);
assertEquals(registrationHandle, registrationContext.getRegistrationHandle());
assertNull(registrationContext.getRegistrationState());
- assertTrue(info.isConsistentWithProducerExpectations().booleanValue());
- assertTrue(info.isRegistrationValid().booleanValue());
+ assertTrue(info.isConsistentWithProducerExpectations());
+ assertTrue(info.isRegistrationValid());
assertFalse(info.isRefreshNeeded());
- assertTrue(info.isRegistrationRequired().booleanValue());
+ assertTrue(info.isRegistrationRequired());
assertTrue(info.isRegistrationDeterminedRequired());
assertFalse(info.isRegistrationDeterminedNotRequired());
}
Modified:
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/consumer/ProducerInfo.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/consumer/ProducerInfo.java 2008-07-01
22:16:24 UTC (rev 11244)
+++
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/consumer/ProducerInfo.java 2008-07-01
22:16:51 UTC (rev 11245)
@@ -265,7 +265,7 @@
*/
public boolean refresh(boolean forceRefresh) throws PortletInvokerException
{
- return detailedRefresh(forceRefresh).specificCode();
+ return detailedRefresh(forceRefresh).didRefreshHappen();
}
public RefreshResult detailedRefresh(boolean forceRefresh) throws
PortletInvokerException
@@ -273,7 +273,7 @@
RefreshResult result = internalRefresh(forceRefresh);
// update DB
- if (result.specificCode())
+ if (result.didRefreshHappen())
{
// mark as inactive if the refresh had issues...
if (result.hasIssues())
@@ -303,14 +303,17 @@
if (forceRefresh || isRefreshNeeded(true))
{
log.debug("Refreshing info for producer '" + getId() +
"'");
- RefreshResult result = new RefreshResult(true, REFRESH_MEANING);
+// RefreshResult result = new RefreshResult(true, REFRESH_MEANING);
+ RefreshResult result = new RefreshResult();
try
{
persistentEndpointInfo.refresh();
}
catch (InvokerUnavailableException e)
{
- result.appendToStatus("Couldn't refresh endpoint information:
").append(e.getLocalizedMessage());
+ log.debug("Couldn't refresh endpoint information: " + e);
+// result.appendToStatus("Couldn't refresh endpoint information:
").append(e.getLocalizedMessage());
+// throw new PortletInvokerException("Couldn't refresh endpoint
information: " + e.getLocalizedMessage());
}
// save changes to endpoint
registry.updateProducerInfo(this);
@@ -340,8 +343,9 @@
setActiveAndSave(false);
}
- result.appendToStatus(registrationResult.getStatus(), false);
- result.setHasIssues(registrationResult.hasIssues());
+ result.setRegistrationResult(registrationResult);
+ /*result.appendToStatus(registrationResult.getStatus(), false);
+ result.setHasIssues(registrationResult.hasIssues());*/
return result;
}
else
@@ -366,13 +370,13 @@
RefreshResult registrationResult =
internalRefreshRegistration(serviceDescription, true, forceRefresh,
!registeredSDSucceeded);
registry.updateProducerInfo(this);
- result.appendToStatus(registrationResult.getStatus());
+// result.appendToStatus(registrationResult.getStatus());
// attempt to register and determine if the current service description can
be used to extract POPs
if (registeredSDSucceeded && !registrationResult.hasIssues())
{
registrationResult = register(serviceDescription, false);
- if (registrationResult.specificCode())
+ if (RefreshResult.Status.SUCCESS.equals(registrationResult.getStatus()))
{
// registration occurred, so we should ask for a new service
description
serviceDescription = getServiceDescription(false);
@@ -382,9 +386,10 @@
extractOfferedPortlets(serviceDescription);
}
- result.appendToStatus(registrationResult.getStatus());
- result.setHasIssues(registrationResult.hasIssues());
- result.appendToStatus("Producer information successfully
refreshed");
+// result.appendToStatus(registrationResult.getStatus());
+// result.setHasIssues(registrationResult.hasIssues());
+ result.setRegistrationResult(registrationResult);
+// result.appendToStatus("Producer information successfully
refreshed");
return result;
}
@@ -397,7 +402,7 @@
}
}
- return new RefreshResult(false, REFRESH_MEANING);
+ return new RefreshResult(RefreshResult.Status.BYPASSED);
}
private Map<String, ItemDescription> toMap(ItemDescription[] itemDescriptions)
@@ -838,8 +843,11 @@
String msg = "Consumer with id '" + persistentId +
"' successfully registered with handle: '"
+ registrationContext.getRegistrationHandle() + "'";
log.debug(msg);
- result.appendToStatus(msg);
- return new RefreshResult(result, true, REGISTER_MEANING);
+// result.appendToStatus(msg);
+ RefreshResult res = new RefreshResult();
+ res.setRegistrationResult(result);
+ return res;
+// return new RefreshResult(result, true, REGISTER_MEANING);
}
catch (Exception e)
{
@@ -861,7 +869,7 @@
}
}
- return new RefreshResult(false, REGISTER_MEANING);
+ return new RefreshResult(RefreshResult.Status.BYPASSED);
}
public void deregister() throws PortletInvokerException
Modified:
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/consumer/RefreshResult.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/consumer/RefreshResult.java 2008-07-01
22:16:24 UTC (rev 11244)
+++
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/consumer/RefreshResult.java 2008-07-01
22:16:51 UTC (rev 11245)
@@ -23,6 +23,7 @@
package org.jboss.portal.wsrp.consumer;
+import static org.jboss.portal.wsrp.consumer.RefreshResult.Status.*;
import org.jboss.portal.wsrp.core.ServiceDescription;
/**
@@ -32,75 +33,56 @@
*/
public class RefreshResult
{
- private StringBuffer status = new StringBuffer();
- private boolean hasIssues;
- private boolean specificCode;
- private final String meaning;
+ public enum Status { SUCCESS, FAILURE, UNAVAILABLE, BYPASSED, UNKNOWN }
+
private ServiceDescription serviceDescription;
- private static final String COLON = ".\n";
+ private Status status;
+ private RefreshResult registrationResult;
- public RefreshResult(boolean specificCode, String specificCodeMeaning)
+ public RefreshResult()
{
- this.specificCode = specificCode;
- this.meaning = specificCodeMeaning;
+ status = UNKNOWN;
}
- public RefreshResult(RefreshResult previous, boolean specificCode, String
specificCodeMeaning)
+ public RefreshResult(Status status)
{
- this(specificCode, specificCodeMeaning);
- appendToStatus(previous.getStatus());
- setHasIssues(previous.hasIssues);
+ this.status = status;
}
- public boolean hasIssues()
+ public RefreshResult getRegistrationResult()
{
- return hasIssues;
+ return registrationResult;
}
- public void setHasIssues(boolean hasIssues)
+ public void setRegistrationResult(RefreshResult registrationResult)
{
- this.hasIssues = hasIssues;
+ if (registrationResult != null)
+ {
+ this.registrationResult = registrationResult;
+ status = registrationResult.getStatus();
+ }
}
- public String getStatus()
+ public boolean didRefreshHappen()
{
- return status.toString();
+ return SUCCESS.equals(status) || FAILURE.equals(status);
}
- StringBuffer appendToStatus(String message)
+ public boolean hasIssues()
{
- return appendToStatus(message, true);
+ return !(SUCCESS.equals(status) || BYPASSED.equals(status)) ;
}
- StringBuffer appendToStatus(String message, boolean appendColon)
+ public Status getStatus()
{
- if (message != null && message.length() > 1)
- {
- status.append(message);
- // only happen a colon if the message is not ending with one already.
- if (appendColon && (status.lastIndexOf(COLON) != status.length() - 2))
- {
- status.append(COLON);
- }
- }
return status;
}
- public boolean specificCode()
+ public void setStatus(Status status)
{
- return specificCode;
+ this.status = status;
}
- public void setSpecificCode(boolean specificCode)
- {
- this.specificCode = specificCode;
- }
-
- public String getMeaning()
- {
- return meaning;
- }
-
public void setServiceDescription(ServiceDescription serviceDescription)
{
this.serviceDescription = serviceDescription;
Modified:
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/consumer/RegistrationInfo.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/consumer/RegistrationInfo.java 2008-07-01
22:16:24 UTC (rev 11244)
+++
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/consumer/RegistrationInfo.java 2008-07-01
22:16:51 UTC (rev 11245)
@@ -59,7 +59,7 @@
private String persistentConsumerName;
private String persistentRegistrationHandle;
private byte[] persistentRegistrationState;
- private Map persistentRegistrationProperties;
+ private Map<String, RegistrationProperty> persistentRegistrationProperties;
private transient Boolean requiresRegistration;
private transient Boolean consistentWithProducerExpectations;
@@ -100,10 +100,9 @@
if (other.persistentRegistrationProperties != null)
{
- this.persistentRegistrationProperties = new
HashMap(other.persistentRegistrationProperties.size());
- for (Object o : other.persistentRegistrationProperties.values())
+ this.persistentRegistrationProperties = new HashMap<String,
RegistrationProperty>(other.persistentRegistrationProperties.size());
+ for (RegistrationProperty otherProp :
other.persistentRegistrationProperties.values())
{
- RegistrationProperty otherProp = (RegistrationProperty)o;
String name = otherProp.getName();
RegistrationProperty prop = new RegistrationProperty(name,
otherProp.getValue(), otherProp.getLang());
prop.setStatus(otherProp.getStatus());
@@ -231,7 +230,7 @@
public boolean hasLocalInfo()
{
- return persistentRegistrationHandle != null ||
!getRegistrationProperties().isEmpty();
+ return persistentRegistrationHandle != null || (persistentRegistrationProperties !=
null && !persistentRegistrationProperties.isEmpty());
}
public RegistrationData getRegistrationData()
@@ -239,7 +238,7 @@
registrationData = WSRPTypeFactory.createDefaultRegistrationData();
registrationData.setConsumerName(persistentConsumerName);
List<Property> properties = new ArrayList<Property>();
- Map regProps = getRegistrationProperties();
+ Map regProps = getRegistrationProperties(false);
if (!regProps.isEmpty())
{
for (Object o : regProps.values())
@@ -276,7 +275,7 @@
public RegistrationProperty getRegistrationProperty(String name)
{
ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(name, "registration
property name", "RegistrationInfo.getRegistrationProperty");
- return (RegistrationProperty)getRegistrationProperties().get(name);
+ return getRegistrationProperties(false).get(name);
}
public RegistrationProperty setRegistrationPropertyValue(String name, String value)
@@ -284,7 +283,7 @@
ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(name, "registration
property name", "RegistrationInfo.setRegistrationPropertyValue");
ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(value, "registration
property value", "RegistrationInfo.setRegistrationPropertyValue");
- RegistrationProperty prop =
(RegistrationProperty)getOrCreateRegistrationPropertiesMap(true).get(name);
+ RegistrationProperty prop = getOrCreateRegistrationPropertiesMap(true).get(name);
if (prop != null)
{
value = modifyIfNeeded(prop.getValue(), value);
@@ -312,26 +311,38 @@
dirty = true;
}
- private Map getOrCreateRegistrationPropertiesMap(boolean forceCreate)
+ private Map<String, RegistrationProperty>
getOrCreateRegistrationPropertiesMap(boolean forceCreate)
{
if (forceCreate && persistentRegistrationProperties == null)
{
- persistentRegistrationProperties = new HashMap();
+ persistentRegistrationProperties = new HashMap<String,
RegistrationProperty>();
}
return persistentRegistrationProperties;
}
- public Map getRegistrationProperties()
+ public Map<String,RegistrationProperty> getRegistrationProperties()
{
- Map properties = getOrCreateRegistrationPropertiesMap(false);
+ return getRegistrationProperties(true);
+ }
+
+ private Map<String,RegistrationProperty> getRegistrationProperties(boolean
immutable)
+ {
+ Map<String,RegistrationProperty> properties =
getOrCreateRegistrationPropertiesMap(false);
if (properties != null)
{
- return Collections.unmodifiableMap(properties);
+ if (immutable)
+ {
+ return Collections.unmodifiableMap(properties);
+ }
+ else
+ {
+ return properties;
+ }
}
else
{
- return Collections.EMPTY_MAP;
+ return Collections.emptyMap();
}
}
@@ -360,6 +371,7 @@
if (forceRefresh || isRefreshNeeded())
{
+ // get a service description if we don't already have one
if (serviceDescription == null && parent != null)
{
try
@@ -373,6 +385,7 @@
}
}
+ // if we still don't have a service description, we have a problem!
if (serviceDescription == null)
{
String msg = "Couldn't get a service description to refresh
from!";
@@ -383,10 +396,11 @@
persistentRegistrationProperties = getOrCreateRegistrationPropertiesMap(true);
RegistrationRefreshResult result = new RegistrationRefreshResult();
- // if we're not merging, we need to copy the properties so that we can
collect validation results.
+
+ // if we're not merging, we need to copy the current properties so that we
can collect validation results.
if (!mergeWithLocalInfo)
{
- result.setRegistrationProperties(new
HashMap(persistentRegistrationProperties));
+ result.setRegistrationProperties(new
HashMap<String,RegistrationProperty>(persistentRegistrationProperties));
}
dirty = false;
@@ -394,27 +408,26 @@
{
requiresRegistration = Boolean.TRUE;
StringBuffer message = new StringBuffer("Producer
'").append(producerId).append("' requires registration");
- result.appendToStatus(message.toString());
+// result.appendToStatus(message.toString());
log.debug(message);
// check if the configured registration properties match the producer
expectations
ModelDescription regPropDescs =
serviceDescription.getRegistrationPropertyDescription();
if (regPropDescs != null)
{
- result.setHasIssues(false);
+ result.setStatus(RefreshResult.Status.SUCCESS);
PropertyDescription[] propertyDescriptions =
regPropDescs.getPropertyDescriptions();
if (propertyDescriptions != null && propertyDescriptions.length
> 0)
{
- Map descriptionsMap =
getRegistrationPropertyDescriptionsFromWSRP(propertyDescriptions);
+ Map<String,RegistrationProperty> descriptionsMap =
getRegistrationPropertyDescriptionsFromWSRP(propertyDescriptions);
// check that we don't have unexpected registration properties and
if so, mark them as invalid or remove them
- Set expectedNames = descriptionsMap.keySet();
+ Set<String> expectedNames = descriptionsMap.keySet();
checkForExtraProperties(producerId, result, expectedNames,
persistentRegistrationProperties, !mergeWithLocalInfo);
// Merge existing properties
- for (Object o : descriptionsMap.values())
+ for (RegistrationProperty prop : descriptionsMap.values())
{
- RegistrationProperty prop = (RegistrationProperty)o;
String name = prop.getName();
RegistrationProperty existing = getRegistrationProperty(name);
if (existing != null)
@@ -423,7 +436,7 @@
existing.setDescription(prop.getDescription());
if (existing.isDeterminedInvalid())
{
- result.setHasIssues(true);
+ result.setStatus(RefreshResult.Status.FAILURE);
}
}
else
@@ -438,8 +451,9 @@
result.getRegistrationProperties().put(name, prop);
}
- result.appendToStatus("Missing value for property
'" + name + "'");
- result.setHasIssues(true);
+ log.debug("Missing value for property '" + name +
"'");
+// result.appendToStatus("Missing value for property
'" + name + "'");
+ result.setStatus(RefreshResult.Status.FAILURE);
}
}
}
@@ -457,9 +471,9 @@
{
String msg = "Producer '" + producerId + "'
doesn't require registration";
log.debug(msg);
- result.appendToStatus(msg);
+// result.appendToStatus(msg);
requiresRegistration = Boolean.FALSE;
- result.setHasIssues(false);
+ result.setStatus(RefreshResult.Status.SUCCESS);
}
// if we're merging, the resulting properties are the saved properties
@@ -469,17 +483,19 @@
}
// if issues have been detected, mark the registration as invalid (but do not
reset the data)
+ // todo: check if the state is consistent with the producer expectations for
example if we have registration
+ // properties when the producer does not require registration?
consistentWithProducerExpectations = !result.hasIssues();
- String msg = "Registration configuration is " + (result.hasIssues() ?
"NOT " : "") + "valid";
- result.appendToStatus(msg);
+ String msg = "Registration configuration is " +
(consistentWithProducerExpectations ? "" : "NOT ") +
"valid";
+// result.appendToStatus(msg);
log.debug(msg);
return result;
}
else
{
RegistrationRefreshResult result = new RegistrationRefreshResult();
- result.setHasIssues(false);
+ result.setStatus(RefreshResult.Status.SUCCESS);
result.setRegistrationProperties(persistentRegistrationProperties);
return result;
}
@@ -488,7 +504,7 @@
private void handleNoRequiredRegistrationProperties(String producerId,
RegistrationRefreshResult result, boolean keepExtra, boolean forceCheckOfExtraProps)
{
log.debug("The producer didn't require any specific registration
properties");
- Map properties = getOrCreateRegistrationPropertiesMap(false);
+ Map<String, RegistrationProperty> properties =
getOrCreateRegistrationPropertiesMap(false);
if (properties != null && !properties.isEmpty())
{
if (forceCheckOfExtraProps || !hasRegisteredIfNeeded())
@@ -499,14 +515,14 @@
else
{
log.debug("Consumer is registered: producer most likely did not resend
property descriptions");
- result.setHasIssues(false);
+ result.setStatus(RefreshResult.Status.SUCCESS);
}
}
else
{
log.debug("Using default registration data for producer '" +
producerId + "'");
registrationData = WSRPTypeFactory.createDefaultRegistrationData();
- result.setHasIssues(false);
+ result.setStatus(RefreshResult.Status.SUCCESS);
}
}
@@ -516,27 +532,26 @@
* @param expectedNames
* @param properties
*/
- private void checkForExtraProperties(String producerId, RegistrationRefreshResult
result, Set expectedNames, Map properties, boolean keepExtra)
+ private void checkForExtraProperties(String producerId, RegistrationRefreshResult
result, Set<String> expectedNames, Map<String, RegistrationProperty>
properties, boolean keepExtra)
{
- Set unexpected = new HashSet(properties.keySet());
+ Set<String> unexpected = new HashSet<String>(properties.keySet());
unexpected.removeAll(expectedNames);
if (!unexpected.isEmpty())
{
StringBuffer message = new StringBuffer("Unexpected registration
properties:\n");
int size = unexpected.size();
int index = 0;
- for (Object anUnexpected : unexpected)
+ for (String name : unexpected)
{
- String name = (String)anUnexpected;
message.append("'").append(name).append("'");
if (keepExtra)
{
// mark the prop as invalid
- RegistrationProperty prop = (RegistrationProperty)properties.get(name);
+ RegistrationProperty prop = properties.get(name);
prop.setInvalid(Boolean.TRUE, RegistrationProperty.INEXISTENT_STATUS);
// do the same in the result
- prop =
(RegistrationProperty)result.getRegistrationProperties().get(name);
+ prop = result.getRegistrationProperties().get(name);
prop.setInvalid(Boolean.TRUE, RegistrationProperty.INEXISTENT_STATUS);
}
else
@@ -551,8 +566,8 @@
}
}
log.debug(message);
- result.appendToStatus(message.toString());
- result.setHasIssues(true);
+// result.appendToStatus(message.toString());
+ result.setStatus(RefreshResult.Status.FAILURE);
}
}
@@ -560,7 +575,7 @@
* @param descriptions
* @return
*/
- private Map getRegistrationPropertyDescriptionsFromWSRP(PropertyDescription[]
descriptions)
+ private Map<String,RegistrationProperty>
getRegistrationPropertyDescriptionsFromWSRP(PropertyDescription[] descriptions)
{
if (descriptions != null)
{
@@ -579,7 +594,7 @@
}
else
{
- return Collections.EMPTY_MAP;
+ return Collections.emptyMap();
}
}
@@ -646,32 +661,22 @@
public class RegistrationRefreshResult extends RefreshResult
{
+ private Map<String, RegistrationProperty> registrationProperties;
+
public RegistrationRefreshResult()
{
- super(false, "Unused");
+ super();
}
- private Map registrationProperties;
-
- public Map getRegistrationProperties()
+ public Map<String, RegistrationProperty> getRegistrationProperties()
{
return registrationProperties;
}
- public void setRegistrationProperties(Map registrationProperties)
+ public void setRegistrationProperties(Map<String,RegistrationProperty>
registrationProperties)
{
this.registrationProperties = registrationProperties;
- }
-
- public boolean specificCode()
- {
- throw new UnsupportedOperationException();
- }
-
- public void setSpecificCode(boolean specificCode)
- {
- throw new UnsupportedOperationException();
- }
+ }
}
private String modifyIfNeeded(String oldValue, String newValue)
Modified:
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/consumer/RegistrationProperty.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/consumer/RegistrationProperty.java 2008-07-01
22:16:24 UTC (rev 11244)
+++
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/wsrp/consumer/RegistrationProperty.java 2008-07-01
22:16:51 UTC (rev 11245)
@@ -60,13 +60,14 @@
setValue(stringValue);
}
+ @Override
public boolean equals(Object o)
{
if (this == o)
{
return true;
}
- if (o == null || getClass() != o.getClass())
+ if (!(o instanceof RegistrationProperty))
{
return false;
}
@@ -81,40 +82,17 @@
{
return false;
}
- if (!persistentValue.equals(that.persistentValue))
- {
- return false;
- }
- if (persistentDescription != null ?
!persistentDescription.equals(that.persistentDescription) : that.persistentDescription !=
null)
- {
- return false;
- }
- if (persistentInvalid != null ? !persistentInvalid.equals(that.persistentInvalid) :
that.persistentInvalid != null)
- {
- return false;
- }
- if (!persistentLang.equals(that.persistentLang))
- {
- return false;
- }
- if (status != null ? !status.equals(that.status) : that.status != null)
- {
- return false;
- }
+ return !(persistentValue != null ? !persistentValue.equals(that.persistentValue) :
that.persistentValue != null);
- return true;
}
+ @Override
public int hashCode()
{
int result;
result = (persistentId != null ? persistentId.hashCode() : 0);
result = 31 * result + persistentName.hashCode();
- result = 31 * result + persistentValue.hashCode();
- result = 31 * result + (persistentDescription != null ?
persistentDescription.hashCode() : 0);
- result = 31 * result + (persistentInvalid != null ? persistentInvalid.hashCode() :
0);
- result = 31 * result + persistentLang.hashCode();
- result = 31 * result + (status != null ? status.hashCode() : 0);
+ result = 31 * result + (persistentValue != null ? persistentValue.hashCode() : 0);
return result;
}
@@ -166,7 +144,7 @@
public boolean isDeterminedInvalid()
{
- return persistentInvalid != null && persistentInvalid.booleanValue();
+ return persistentInvalid != null && persistentInvalid;
}
public void setInvalid(Boolean invalid, String status)