[portal-commits] JBoss Portal SVN: r11957 - in branches/JBoss_Portal_Branch_2_7: wsrp/src/main/org/jboss/portal/test/wsrp/consumer and 1 other directories.

portal-commits at lists.jboss.org portal-commits at lists.jboss.org
Wed Sep 24 03:54:40 EDT 2008


Author: chris.laprun at jboss.com
Date: 2008-09-24 03:54:40 -0400 (Wed, 24 Sep 2008)
New Revision: 11957

Modified:
   branches/JBoss_Portal_Branch_2_7/core-wsrp/src/main/org/jboss/portal/wsrp/admin/ui/ConsumerBean.java
   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/RegistrationInfo.java
Log:
- Renamed *Modified to *ModifiedSinceLastRefresh since it fits semantics better.
- Added isModifyRegistrationNeeded to handle most of the modifyRegistration checking logic to RegistrationInfo.
- Added tests.


Modified: branches/JBoss_Portal_Branch_2_7/core-wsrp/src/main/org/jboss/portal/wsrp/admin/ui/ConsumerBean.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core-wsrp/src/main/org/jboss/portal/wsrp/admin/ui/ConsumerBean.java	2008-09-23 21:28:50 UTC (rev 11956)
+++ branches/JBoss_Portal_Branch_2_7/core-wsrp/src/main/org/jboss/portal/wsrp/admin/ui/ConsumerBean.java	2008-09-24 07:54:40 UTC (rev 11957)
@@ -403,7 +403,7 @@
                if (!isRegistrationLocallyModified())
                {
                   IllegalStateException e =
-                     new IllegalStateException("Registration not locally modified: there should be expected registration from producer!");
+                          new IllegalStateException("Registration not locally modified: there should be expected registration from producer!");
                   log.debug(e);
                   throw e;
                }
@@ -412,11 +412,11 @@
             try
             {
                // todo: this should be done better cf regPropListener
-               newReg.setModified(true); // mark as modified to force refresh of RegistrationData
+               newReg.setModifiedSinceLastRefresh(true); // mark as modified to force refresh of RegistrationData
                // attempt to modify the registration using new registration info
                info.setRegistrationInfo(newReg);
                info.modifyRegistration();
-               newReg.setModified(false);
+               newReg.setModifiedSinceLastRefresh(false);
 
                registrationLocallyModified = false;
 

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-09-23 21:28:50 UTC (rev 11956)
+++ branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/test/wsrp/consumer/RegistrationInfoTestCase.java	2008-09-24 07:54:40 UTC (rev 11957)
@@ -70,7 +70,8 @@
       // and we don't know if the registration is valid
       assertNull(info.isRegistrationValid());
 
-      assertFalse(info.isModified());
+      assertFalse(info.isModifiedSinceLastRefresh());
+      assertFalse(info.isModifyRegistrationNeeded());
 
       try
       {
@@ -98,7 +99,8 @@
 
       // check status
       assertNull(info.isConsistentWithProducerExpectations());
-      assertTrue(info.isModified());
+      assertTrue(info.isModifiedSinceLastRefresh());
+      assertTrue(info.isModifyRegistrationNeeded());
 
       Map properties = info.getRegistrationProperties();
       assertFalse(properties.isEmpty());
@@ -120,7 +122,8 @@
       RegistrationProperty prop = info.getRegistrationProperty("prop0");
       assertNull(prop.isInvalid());
       assertFalse(result.hasIssues());
-      assertFalse(info.isModified());
+      assertFalse(info.isModifiedSinceLastRefresh());
+      assertFalse(info.isModifyRegistrationNeeded());
       assertTrue(info.isConsistentWithProducerExpectations());
 
       // specifiy that the prop is valid to simulate a successful registration (integration test, should have something
@@ -146,6 +149,7 @@
       assertTrue(info.isRegistrationDeterminedNotRequired());
       assertFalse(info.isRegistrationDeterminedRequired());
       assertTrue(info.isRegistrationValid());
+      assertFalse(info.isModifyRegistrationNeeded());
 
       result = info.refresh(sd, producerId, false, false, false);
       assertNotNull(result);
@@ -155,6 +159,7 @@
       assertTrue(info.isRegistrationDeterminedNotRequired());
       assertFalse(info.isRegistrationDeterminedRequired());
       assertTrue(info.isRegistrationValid());
+      assertFalse(info.isModifyRegistrationNeeded());
    }
 
    public void testRefreshRegistrationDefaultRegistrationNoLocalInfo()
@@ -178,13 +183,15 @@
       // set a registration property
       info.setRegistrationPropertyValue("foo", "bar");
 
+      // we were not registered so this is a failure and not a need to call modifyRegistration
       RegistrationInfo.RegistrationRefreshResult result = info.refresh(
-              createServiceDescription(true, 0), producerId, false, false, false);
+              createServiceDescription(true, 0), producerId, false, false, true);
       assertNotNull(result);
       assertTrue(result.hasIssues());
       assertEquals(RefreshResult.Status.FAILURE, result.getStatus());
       assertEquals(1, info.getRegistrationProperties().size());
       assertEquals(1, result.getRegistrationProperties().size());
+      assertFalse(info.isModifyRegistrationNeeded());
 
       Map regProps = result.getRegistrationProperties();
       assertNotNull(regProps);
@@ -196,6 +203,34 @@
       assertEquals(RegistrationProperty.Status.INEXISTENT, prop.getStatus());
    }
 
+   public void testRefreshRegistrationDefaultRegistrationExtraLocalInfoWhileRegistered()
+   {
+      // set a registration property
+      info.setRegistrationPropertyValue("foo", "bar");
+
+      // simulate being registered
+      info.setRegistrationHandle("blah");
+
+      // we were registered so we need to call modifyRegistration, force check of extra props
+      RegistrationInfo.RegistrationRefreshResult result = info.refresh(
+              createServiceDescription(true, 0), producerId, false, false, true);
+      assertNotNull(result);
+      assertEquals(RefreshResult.Status.MODIFY_REGISTRATION_REQUIRED, result.getStatus());
+      assertTrue(result.hasIssues());
+      assertEquals(1, info.getRegistrationProperties().size());
+      assertEquals(1, result.getRegistrationProperties().size());
+      assertTrue(info.isModifyRegistrationNeeded());
+
+      Map regProps = result.getRegistrationProperties();
+      assertNotNull(regProps);
+
+      RegistrationProperty prop = (RegistrationProperty)regProps.get("foo");
+      assertNotNull(prop);
+      assertEquals("bar", prop.getValue());
+      assertTrue(prop.isInvalid());
+      assertEquals(RegistrationProperty.Status.INEXISTENT, prop.getStatus());
+   }
+
    public void testRefreshRegistrationRegistrationNoLocalInfo()
    {
       // producer requests 2 registration properties
@@ -207,6 +242,7 @@
       assertEquals(RefreshResult.Status.FAILURE, result.getStatus());
       assertEquals(0, info.getRegistrationProperties().size());
       assertEquals(2, result.getRegistrationProperties().size());
+      assertFalse(info.isModifyRegistrationNeeded()); // we weren't registered
 
       Map regProps = result.getRegistrationProperties();
       assertNotNull(regProps);
@@ -294,24 +330,29 @@
       assertTrue(info.isRegistrationRequired());
       assertTrue(info.isRegistrationDeterminedRequired());
       assertFalse(info.isRegistrationDeterminedNotRequired());
+      assertFalse(info.isModifyRegistrationNeeded());
    }
 
    public void testGetRegistrationData()
    {
       assertNotNull(info.getRegistrationData());
-      assertFalse(info.isModified());
+      assertFalse(info.isModifiedSinceLastRefresh());
+      assertFalse(info.isModifyRegistrationNeeded());
 
       info.setRegistrationPropertyValue("prop0", "value0");
-      assertTrue(info.isModified());
+      assertTrue(info.isModifiedSinceLastRefresh());
+      assertTrue(info.isModifyRegistrationNeeded());
       RegistrationData registrationData = info.getRegistrationData();
       checkRegistrationData(registrationData, "value0");
       Property[] properties;
 
       // check that setRegistrationValidInternalState properly updates RegistrationData if required
       info.setRegistrationPropertyValue("prop0", "value1");
-      assertTrue(info.isModified());
+      assertTrue(info.isModifiedSinceLastRefresh());
+      assertTrue(info.isModifyRegistrationNeeded());
       info.setRegistrationValidInternalState();
-      assertFalse(info.isModified());
+      assertFalse(info.isModifiedSinceLastRefresh());
+      assertFalse(info.isModifyRegistrationNeeded());
       properties = info.getRegistrationData().getRegistrationProperties();
       assertEquals("value1", properties[0].getStringValue());
    }
@@ -365,7 +406,7 @@
       assertTrue(info.isRegistrationDeterminedRequired());
       assertFalse(info.isRegistrationValid());
       assertFalse(info.isConsistentWithProducerExpectations());
-      assertFalse(info.isModified());
+      assertFalse(info.isModifiedSinceLastRefresh());
    }
 
    private void checkRegistrationData(RegistrationData registrationData, String prop0Value)

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-09-23 21:28:50 UTC (rev 11956)
+++ branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/consumer/ProducerInfo.java	2008-09-24 07:54:40 UTC (rev 11957)
@@ -250,7 +250,7 @@
 
    public boolean isModifyRegistrationRequired()
    {
-      return isModifyRegistrationRequired || (persistentRegistrationInfo != null && persistentRegistrationInfo.isModified());
+      return isModifyRegistrationRequired || (persistentRegistrationInfo != null && persistentRegistrationInfo.isModifiedSinceLastRefresh());
    }
 
    // FIX-ME: remove when a better dirty management is in place at property level
@@ -308,7 +308,7 @@
    {
       ServiceDescription serviceDescription;
 
-      if(isModifyRegistrationRequired)
+      if (isModifyRegistrationRequired)
       {
          return new RefreshResult(RefreshResult.Status.MODIFY_REGISTRATION_REQUIRED);
       }

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-09-23 21:28:50 UTC (rev 11956)
+++ branches/JBoss_Portal_Branch_2_7/wsrp/src/main/org/jboss/portal/wsrp/consumer/RegistrationInfo.java	2008-09-24 07:54:40 UTC (rev 11957)
@@ -64,7 +64,8 @@
    private transient Boolean requiresRegistration;
    private transient Boolean consistentWithProducerExpectations;
    private transient RegistrationData registrationData;
-   private transient boolean modified;
+   private transient boolean modifiedSinceLastRefresh;
+   private transient boolean modifyRegistrationNeeded;
    private transient ProducerInfo parent;
 
    public RegistrationInfo(ProducerInfo producerInfo)
@@ -154,7 +155,7 @@
 
    public boolean isRefreshNeeded()
    {
-      boolean result = requiresRegistration == null || isModified();
+      boolean result = requiresRegistration == null || isModifiedSinceLastRefresh();
       if (result)
       {
          log.debug("Refresh needed");
@@ -307,7 +308,7 @@
       {
          throw new IllegalArgumentException("Cannot remove inexistent registration property '" + name + "'");
       }
-      setModified(true);
+      setModifiedSinceLastRefresh(true);
    }
 
    private Map<String, RegistrationProperty> getOrCreateRegistrationPropertiesMap(boolean forceCreate)
@@ -402,7 +403,8 @@
          {
             result.setRegistrationProperties(new HashMap<String, RegistrationProperty>(persistentRegistrationProperties));
          }
-         setModified(false);
+         setModifiedSinceLastRefresh(false);
+         modifyRegistrationNeeded = false;
 
          if (serviceDescription.isRequiresRegistration())
          {
@@ -450,7 +452,7 @@
                         }
 
                         log.debug("Missing value for property '" + name + "'");
-                        result.setStatus(RefreshResult.Status.FAILURE);
+                        setResultAsFailedOrModifyNeeded(result);
                      }
                   }
                }
@@ -562,6 +564,19 @@
             }
          }
          log.debug(message);
+         setResultAsFailedOrModifyNeeded(result);
+      }
+   }
+
+   private void setResultAsFailedOrModifyNeeded(RegistrationRefreshResult result)
+   {
+      if (persistentRegistrationHandle != null)
+      {
+         result.setStatus(RefreshResult.Status.MODIFY_REGISTRATION_REQUIRED);
+         modifyRegistrationNeeded = true;
+      }
+      else
+      {
          result.setStatus(RefreshResult.Status.FAILURE);
       }
    }
@@ -627,7 +642,8 @@
 
       consistentWithProducerExpectations = Boolean.TRUE; // since we have a registration context, we're consistent with the Producer
       requiresRegistration = Boolean.TRUE; // we know we require registration
-      setModified(false); // our state is clean :)
+      setModifiedSinceLastRefresh(false); // our state is clean :)
+      modifyRegistrationNeeded = false;
    }
 
    public RegistrationContext getRegistrationContext()
@@ -644,20 +660,26 @@
       }
    }
 
-   public boolean isModified()
+   public boolean isModifyRegistrationNeeded()
    {
-      return modified;
+      return modifyRegistrationNeeded;
    }
 
-   public void setModified(boolean modified)
+   public boolean isModifiedSinceLastRefresh()
    {
-      this.modified = modified;
+      return modifiedSinceLastRefresh;
    }
 
+   public void setModifiedSinceLastRefresh(boolean modifiedSinceLastRefresh)
+   {
+      this.modifiedSinceLastRefresh = modifiedSinceLastRefresh;
+   }
+
    /** todo: Should be package-only, public for tests... */
    public void propertyValueChanged(RegistrationProperty property, Object oldValue, Object newValue)
    {
-      setModified(true);
+      setModifiedSinceLastRefresh(true);
+      modifyRegistrationNeeded = true;
    }
 
    public class RegistrationRefreshResult extends RefreshResult




More information about the portal-commits mailing list