[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