[gatein-commits] gatein SVN: r5180 - in portal/trunk/component/wsrp/src/main/java/org/gatein/portal/wsrp/state/consumer: mapping and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Fri Nov 19 08:44:36 EST 2010


Author: chris.laprun at jboss.com
Date: 2010-11-19 08:44:36 -0500 (Fri, 19 Nov 2010)
New Revision: 5180

Modified:
   portal/trunk/component/wsrp/src/main/java/org/gatein/portal/wsrp/state/consumer/JCRConsumerRegistry.java
   portal/trunk/component/wsrp/src/main/java/org/gatein/portal/wsrp/state/consumer/mapping/ProducerInfosMapping.java
Log:
- GTNWSRP-166: Renaming a consumer now properly changes the JCR path so that it can be properly deleted. Thanks to Julien for the Map trick! :)
- Added exceptions if something doesn't go well in save and delete methods.

Modified: portal/trunk/component/wsrp/src/main/java/org/gatein/portal/wsrp/state/consumer/JCRConsumerRegistry.java
===================================================================
--- portal/trunk/component/wsrp/src/main/java/org/gatein/portal/wsrp/state/consumer/JCRConsumerRegistry.java	2010-11-19 13:36:41 UTC (rev 5179)
+++ portal/trunk/component/wsrp/src/main/java/org/gatein/portal/wsrp/state/consumer/JCRConsumerRegistry.java	2010-11-19 13:44:36 UTC (rev 5180)
@@ -34,6 +34,7 @@
 import org.gatein.portal.wsrp.state.consumer.mapping.RegistrationPropertyMapping;
 import org.gatein.portal.wsrp.state.mapping.RegistrationPropertyDescriptionMapping;
 import org.gatein.wsrp.WSRPConsumer;
+import org.gatein.wsrp.consumer.ConsumerException;
 import org.gatein.wsrp.consumer.ProducerInfo;
 import org.gatein.wsrp.consumer.registry.AbstractConsumerRegistry;
 import org.gatein.wsrp.consumer.registry.xml.XMLConsumerRegistry;
@@ -42,6 +43,7 @@
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author <a href="mailto:chris.laprun at jboss.com">Chris Laprun</a>
@@ -83,15 +85,18 @@
       }
       catch (Exception e)
       {
-         e.printStackTrace();  // todo: fix me
          persister.closeSession(false);
+         throw new ConsumerException(messageOnError, e);
       }
    }
 
    @Override
    protected void delete(ProducerInfo info)
    {
-      persister.delete(info, this);
+      if (!persister.delete(info, this))
+      {
+         throw new ConsumerException("Couldn't delete ProducerInfo " + info);
+      }
    }
 
    @Override
@@ -106,9 +111,12 @@
 
       String oldId;
       String newId;
+      boolean idUnchanged;
+
+      ChromatticSession session = persister.getSession();
+
       synchronized (this)
       {
-         ChromatticSession session = persister.getSession();
          ProducerInfoMapping pim = session.findById(ProducerInfoMapping.class, key);
          if (pim == null)
          {
@@ -118,11 +126,20 @@
          newId = producerInfo.getId();
          pim.initFrom(producerInfo);
 
+         idUnchanged = oldId.equals(newId);
+
+         if (!idUnchanged)
+         {
+            ProducerInfosMapping pims = getProducerInfosMapping(session);
+            Map<String,ProducerInfoMapping> nameToProducerInfoMap = pims.getNameToProducerInfoMap();
+            nameToProducerInfoMap.put(pim.getId(), pim);
+         }
+
          persister.closeSession(true);
       }
 
       // if the consumer's id has changed, return the old one so that state can be updated
-      return (oldId.equals(newId)) ? null : oldId;
+      return idUnchanged ? null : oldId;
    }
 
    @Override

Modified: portal/trunk/component/wsrp/src/main/java/org/gatein/portal/wsrp/state/consumer/mapping/ProducerInfosMapping.java
===================================================================
--- portal/trunk/component/wsrp/src/main/java/org/gatein/portal/wsrp/state/consumer/mapping/ProducerInfosMapping.java	2010-11-19 13:36:41 UTC (rev 5179)
+++ portal/trunk/component/wsrp/src/main/java/org/gatein/portal/wsrp/state/consumer/mapping/ProducerInfosMapping.java	2010-11-19 13:44:36 UTC (rev 5180)
@@ -28,6 +28,7 @@
 import org.chromattic.api.annotations.OneToMany;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author <a href="mailto:chris.laprun at jboss.com">Chris Laprun</a>
@@ -41,6 +42,9 @@
    @OneToMany
    public abstract List<ProducerInfoMapping> getProducerInfos();
 
+   @OneToMany
+   public abstract Map<String, ProducerInfoMapping> getNameToProducerInfoMap();
+
    @Create
    public abstract ProducerInfoMapping createProducerInfo(String producerId);
 }



More information about the gatein-commits mailing list