Author: chris.laprun(a)jboss.com
Date: 2008-07-01 18:16:24 -0400 (Tue, 01 Jul 2008)
New Revision: 11244
Modified:
branches/JBoss_Portal_Branch_2_7/core-wsrp/src/main/org/jboss/portal/wsrp/admin/ui/ConsumerManagerBean.java
branches/JBoss_Portal_Branch_2_7/core-wsrp/src/resources/portal-wsrp-admin-war/WEB-INF/classes/WSRPConfigurationResource.properties
branches/JBoss_Portal_Branch_2_7/core-wsrp/src/resources/portal-wsrp-admin-war/WEB-INF/classes/WSRPConfigurationResource_fr.properties
branches/JBoss_Portal_Branch_2_7/core-wsrp/src/resources/portal-wsrp-admin-war/WEB-INF/jsf/consumers/editConsumer.xhtml
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/test/wsrp/consumer/RegistrationInfoTestCase.java
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/consumer/ProducerInfo.java
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/consumer/RefreshResult.java
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/consumer/RegistrationInfo.java
branches/JBoss_Portal_Branch_2_7/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_7/core-wsrp/src/main/org/jboss/portal/wsrp/admin/ui/ConsumerManagerBean.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-wsrp/src/main/org/jboss/portal/wsrp/admin/ui/ConsumerManagerBean.java 2008-07-01
21:53:05 UTC (rev 11243)
+++
branches/JBoss_Portal_Branch_2_7/core-wsrp/src/main/org/jboss/portal/wsrp/admin/ui/ConsumerManagerBean.java 2008-07-01
22:16:24 UTC (rev 11244)
@@ -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);
Modified:
branches/JBoss_Portal_Branch_2_7/core-wsrp/src/resources/portal-wsrp-admin-war/WEB-INF/classes/WSRPConfigurationResource.properties
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-wsrp/src/resources/portal-wsrp-admin-war/WEB-INF/classes/WSRPConfigurationResource.properties 2008-07-01
21:53:05 UTC (rev 11243)
+++
branches/JBoss_Portal_Branch_2_7/core-wsrp/src/resources/portal-wsrp-admin-war/WEB-INF/classes/WSRPConfigurationResource.properties 2008-07-01
22:16:24 UTC (rev 11244)
@@ -150,6 +150,10 @@
# 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
Modified:
branches/JBoss_Portal_Branch_2_7/core-wsrp/src/resources/portal-wsrp-admin-war/WEB-INF/classes/WSRPConfigurationResource_fr.properties
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-wsrp/src/resources/portal-wsrp-admin-war/WEB-INF/classes/WSRPConfigurationResource_fr.properties 2008-07-01
21:53:05 UTC (rev 11243)
+++
branches/JBoss_Portal_Branch_2_7/core-wsrp/src/resources/portal-wsrp-admin-war/WEB-INF/classes/WSRPConfigurationResource_fr.properties 2008-07-01
22:16:24 UTC (rev 11244)
@@ -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_7/core-wsrp/src/resources/portal-wsrp-admin-war/WEB-INF/jsf/consumers/editConsumer.xhtml
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-wsrp/src/resources/portal-wsrp-admin-war/WEB-INF/jsf/consumers/editConsumer.xhtml 2008-07-01
21:53:05 UTC (rev 11243)
+++
branches/JBoss_Portal_Branch_2_7/core-wsrp/src/resources/portal-wsrp-admin-war/WEB-INF/jsf/consumers/editConsumer.xhtml 2008-07-01
22:16:24 UTC (rev 11244)
@@ -89,20 +89,18 @@
<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}">
- <td>#{prop.name}</td>
- <td>#{prop.description.label.value}</td>
- <td>
- <h:inputText value="#{prop.value}"
size="50"
-
valueChangeListener="#{consumer.regPropListener}"
-
disabled="#{consumer.registrationModified}"/>
- <h:outputText
styleClass="portlet-msg-error" value="#{prop.status}"
-
rendered="#{prop.determinedInvalid}"/>
- </td>
- </tr>
- </c:forEach>
+ <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>
+ <h:inputText value="#{prop.value}"
size="50"
+
valueChangeListener="#{consumer.regPropListener}"
+
disabled="#{consumer.registrationModified}"/>
+ <h:outputText
styleClass="portlet-msg-error" value="#{prop.status}"
+
rendered="#{prop.determinedInvalid}"/>
+ </td>
+ </tr>
</table>
<h:commandLink action="#{consumer.update}"
value="#{i18n.edit_consumer_registration_update_props}"
@@ -113,7 +111,8 @@
#{i18n.edit_consumer_registration_no_props}
</c:otherwise>
</c:choose>
- <h:commandLink action="#{consumer.modifyRegistration}"
value="#{i18n.edit_consumer_registration_modify}"
+ <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"/>
@@ -133,17 +132,16 @@
<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>
+ <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>
@@ -151,9 +149,9 @@
</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"/>
+
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>
@@ -168,7 +166,8 @@
<tr>
<th>#{i18n.edit_consumer_registration_context}</th>
<td id="handle">
- #{i18n.edit_consumer_registration_context_handle} <h:outputText
value="#{consumer.producerInfo.registrationInfo.registrationHandle}"/>
+ #{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"/>
Modified:
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/test/wsrp/consumer/RegistrationInfoTestCase.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/test/wsrp/consumer/RegistrationInfoTestCase.java 2008-07-01
21:53:05 UTC (rev 11243)
+++
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/test/wsrp/consumer/RegistrationInfoTestCase.java 2008-07-01
22:16:24 UTC (rev 11244)
@@ -129,7 +129,7 @@
assertTrue(info.isRefreshNeeded());
assertNull("Property value has changed since last refresh, status should be
unknown", prop.isInvalid());
assertEquals("Property value has changed since last refresh, status should be
unknown",
- RegistrationProperty.UNCHECKED_VALUE_STATUS, prop.getStatus());
+ RegistrationProperty.UNCHECKED_VALUE_STATUS, prop.getStatus());
}
public void testRefreshNoRegistration()
@@ -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()
@@ -162,13 +162,13 @@
assertNull(info.isRegistrationValid());
RegistrationInfo.RegistrationRefreshResult result = info.refresh(
- createServiceDescription(true, 0), producerId, true, false, false);
+ 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()
@@ -177,12 +177,10 @@
info.setRegistrationPropertyValue("foo", "bar");
RegistrationInfo.RegistrationRefreshResult result = info.refresh(
- createServiceDescription(true, 0), producerId, false, false, false);
+ 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()
@@ -224,20 +224,20 @@
info.setRegistrationPropertyValue("foo", "bar");
RegistrationInfo.RegistrationRefreshResult result =
info.refresh(createServiceDescription(true, 2),
- producerId, true, false, false);
+ producerId, true, false, false);
assertNotNull(result);
assertTrue(result.hasIssues());
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_7/wsrp/src/main/org/jboss/portal/wsrp/consumer/ProducerInfo.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/consumer/ProducerInfo.java 2008-07-01
21:53:05 UTC (rev 11243)
+++
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/consumer/ProducerInfo.java 2008-07-01
22:16:24 UTC (rev 11244)
@@ -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)
@@ -487,8 +492,8 @@
if (info.isUsesMethodGet())
{
log.warn("Portlet '" + portletHandle
- + "' uses the GET method in forms. Since we don't handle this,
this portlet will be excluded from " +
- "the list of offered portlets for producer " + persistentId);
+ + "' uses the GET method in forms. Since we don't handle
this, this portlet will be excluded from " +
+ "the list of offered portlets for producer " + persistentId);
}
else
{
@@ -561,7 +566,7 @@
catch (Exception e)
{
log.debug("Couldn't get portlet via getPortletDescription for
producer '" + persistentId
- + "'. Attempting to retrieve it from the service description as
this producer might not support the PortletManagement interface.", e);
+ + "'. Attempting to retrieve it from the service description
as this producer might not support the PortletManagement interface.", e);
justRefreshed = refresh(true);
portlet = getPortletFromCaches(portletHandle, justRefreshed);
@@ -632,7 +637,7 @@
private boolean isCacheExpired()
{
boolean result = !useCache() || System.currentTimeMillis() >
expirationTimeMillis || popsMap == null
- || portletGroups == null;
+ || portletGroups == null;
if (result)
{
log.debug("Cache expired or not used");
@@ -705,7 +710,7 @@
{
Throwable cause = e.getCause();
throw new InvokerUnavailableException("Problem getting service description for
producer "
- + persistentId + ", please see the logs for more information.", cause
== null ? e : cause);
+ + persistentId + ", please see the logs for more information.",
cause == null ? e : cause);
}
private GetServiceDescription getServiceDescriptionRequest(boolean asUnregistred)
throws PortletInvokerException
@@ -774,7 +779,7 @@
throw new RuntimeException("Couldn't reset registration", e);
}
throw new IllegalArgumentException("Couldn't get property descriptions
for portlet '" + portletHandle
- + "' because the provided registration is invalid!");
+ + "' because the provided registration is invalid!");
}
catch (Exception e)
{
@@ -826,7 +831,7 @@
{
log.debug("Attempting registration");
RegistrationContext registrationContext =
persistentEndpointInfo.getRegistrationService()
- .register(persistentRegistrationInfo.getRegistrationData());
+ .register(persistentRegistrationInfo.getRegistrationData());
if (registrationContext == null)
{
@@ -836,10 +841,13 @@
persistentRegistrationInfo.setRegistrationContext(registrationContext);
String msg = "Consumer with id '" + persistentId +
"' successfully registered with handle: '"
- + registrationContext.getRegistrationHandle() + "'";
+ + 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
@@ -904,7 +912,7 @@
{
RegistrationContext registrationContext = getRegistrationContext();
ModifyRegistration modifyRegistration =
WSRPTypeFactory.createModifyRegistration(registrationContext,
- persistentRegistrationInfo.getRegistrationData());
+ persistentRegistrationInfo.getRegistrationData());
RegistrationState state =
persistentEndpointInfo.getRegistrationService().modifyRegistration(modifyRegistration);
// force refresh of internal RegistrationInfo state
@@ -934,7 +942,7 @@
else
{
throw new IllegalStateException("Cannot modify registration for producer
'" + persistentId
- + "' as it's not registered");
+ + "' as it's not registered");
}
}
@@ -954,7 +962,7 @@
}
RefreshResult result =
- persistentRegistrationInfo.refresh(serviceDescription, persistentId,
mergeWithLocalInfo, forceRefresh, forceCheckOfExtraProps);
+ persistentRegistrationInfo.refresh(serviceDescription, persistentId,
mergeWithLocalInfo, forceRefresh, forceCheckOfExtraProps);
log.debug("Refreshed registration information for consumer with id '"
+ persistentId + "'");
@@ -964,9 +972,9 @@
public boolean isRefreshNeeded(boolean considerCache)
{
boolean result = (considerCache && isCacheExpired())
- || persistentRegistrationInfo == null
- || persistentRegistrationInfo.isRefreshNeeded()
- || persistentEndpointInfo.isRefreshNeeded();
+ || persistentRegistrationInfo == null
+ || persistentRegistrationInfo.isRefreshNeeded()
+ || persistentEndpointInfo.isRefreshNeeded();
if (result)
{
log.debug("Refresh needed for producer '" + persistentId +
"'");
Modified:
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/consumer/RefreshResult.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/consumer/RefreshResult.java 2008-07-01
21:53:05 UTC (rev 11243)
+++
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/consumer/RefreshResult.java 2008-07-01
22:16:24 UTC (rev 11244)
@@ -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,73 +33,57 @@
*/
public class RefreshResult
{
- private StringBuffer status = new StringBuffer();
- private boolean hasIssues;
- private boolean specificCode;
- private final String meaning;
- private ServiceDescription serviceDescription;
- private static final String COLON = ".\n";
-
- public RefreshResult(boolean specificCode, String specificCodeMeaning)
+ public enum Status
{
- this.specificCode = specificCode;
- this.meaning = specificCodeMeaning;
+ SUCCESS, FAILURE, UNAVAILABLE, BYPASSED, UNKNOWN
}
- public RefreshResult(RefreshResult previous, boolean specificCode, String
specificCodeMeaning)
- {
- this(specificCode, specificCodeMeaning);
- appendToStatus(previous.getStatus());
- setHasIssues(previous.hasIssues);
- }
+ private ServiceDescription serviceDescription;
+ private Status status;
+ private RefreshResult registrationResult;
- public boolean hasIssues()
+ public RefreshResult()
{
- return hasIssues;
+ status = UNKNOWN;
}
- public void setHasIssues(boolean hasIssues)
+ public RefreshResult(Status status)
{
- this.hasIssues = hasIssues;
+ this.status = status;
}
- public String getStatus()
+ public RefreshResult getRegistrationResult()
{
- return status.toString();
+ return registrationResult;
}
- StringBuffer appendToStatus(String message)
+ public void setRegistrationResult(RefreshResult registrationResult)
{
- return appendToStatus(message, true);
+ if (registrationResult != null)
+ {
+ this.registrationResult = registrationResult;
+ status = registrationResult.getStatus();
+ }
}
- StringBuffer appendToStatus(String message, boolean appendColon)
+ public boolean didRefreshHappen()
{
- 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;
+ return SUCCESS.equals(status) || FAILURE.equals(status);
}
- public boolean specificCode()
+ public boolean hasIssues()
{
- return specificCode;
+ return !(SUCCESS.equals(status) || BYPASSED.equals(status));
}
- public void setSpecificCode(boolean specificCode)
+ public Status getStatus()
{
- this.specificCode = specificCode;
+ return status;
}
- public String getMeaning()
+ public void setStatus(Status status)
{
- return meaning;
+ this.status = status;
}
public void setServiceDescription(ServiceDescription serviceDescription)
Modified:
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/consumer/RegistrationInfo.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/consumer/RegistrationInfo.java 2008-07-01
21:53:05 UTC (rev 11243)
+++
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/consumer/RegistrationInfo.java 2008-07-01
22:16:24 UTC (rev 11244)
@@ -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_7/wsrp/src/main/org/jboss/portal/wsrp/consumer/RegistrationProperty.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/consumer/RegistrationProperty.java 2008-07-01
21:53:05 UTC (rev 11243)
+++
branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/consumer/RegistrationProperty.java 2008-07-01
22:16:24 UTC (rev 11244)
@@ -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)