Author: chris.laprun(a)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@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@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);
}
Show replies by date