[jboss-cvs] jboss-portal/core/src/main/org/jboss/portal/core/impl/model/instance ...
Julien Viet
julien at jboss.com
Thu Aug 24 09:21:37 EDT 2006
User: julien
Date: 06/08/24 09:21:37
Modified: core/src/main/org/jboss/portal/core/impl/model/instance
PersistentInstanceContainer.java
Log:
updated the implementation of destroyClone to now destroy a list of ids and return the list of non destroyed ids. updated the InstanceContainer accordingly
Revision Changes Path
1.51 +51 -31 jboss-portal/core/src/main/org/jboss/portal/core/impl/model/instance/PersistentInstanceContainer.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: PersistentInstanceContainer.java
===================================================================
RCS file: /cvsroot/jboss/jboss-portal/core/src/main/org/jboss/portal/core/impl/model/instance/PersistentInstanceContainer.java,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -b -r1.50 -r1.51
--- PersistentInstanceContainer.java 31 Jul 2006 19:29:48 -0000 1.50
+++ PersistentInstanceContainer.java 24 Aug 2006 13:21:37 -0000 1.51
@@ -35,6 +35,7 @@
import org.jboss.portal.portlet.NoSuchPortletException;
import org.jboss.portal.portlet.PortletInvoker;
import org.jboss.portal.portlet.PortletInvokerException;
+import org.jboss.portal.portlet.state.DestroyCloneFailure;
import org.jboss.portal.security.PortalPermission;
import org.jboss.portal.security.PortalPermissionCollection;
import org.jboss.portal.security.PortalSecurityException;
@@ -55,13 +56,15 @@
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
+import java.util.List;
+import java.util.ArrayList;
/**
* Instance Container that is persistent
*
* @author <a href="mailto:julien at jboss.org">Julien Viet</a>
* @author Anil.Saldhana at jboss.org
- * @version $Revision: 1.50 $
+ * @version $Revision: 1.51 $
*/
public class PersistentInstanceContainer extends AbstractJBossService
implements InstanceContainer, AuthorizationDomain, DomainConfigurator,
@@ -243,48 +246,65 @@
{
throw new NoSuchInstanceException(id);
}
+ Set userInstances = instance.getUserInstances();
- // Destroy the user instances first
- for (Iterator i = instance.getUserInstances().iterator(); i.hasNext();)
+ // Collect portlet ids to destroy
+ StringBuffer destroyLog = new StringBuffer("About to destroy portlets for instance=").
+ append(instance.getInstanceId()).
+ append(" [");
+ List toDestroy = new ArrayList(userInstances.size());
+ for (Iterator i = userInstances.iterator(); i.hasNext();)
{
UserInstance userInstance = (UserInstance)i.next();
// Destroy state
- try
+ String userPortletId = userInstance.getPortletRef();
+ toDestroy.add(userPortletId);
+ destroyLog.append(userPortletId);
+ if (i.hasNext())
{
- portletInvoker.destroyClone(userInstance.portletRef);
+ destroyLog.append(',');
}
- catch (NoSuchPortletException e)
- {
- e.printStackTrace();
}
- catch (InvokerUnavailableException e)
+ if (instance.modifiable)
{
- e.printStackTrace();
+ // Destroy the state only if it is not a producer offered portlet
+ String instancePortletId = instance.getPortletRef();
+ toDestroy.add(instancePortletId);
+ destroyLog.append(instancePortletId);
}
+ destroyLog.append(']');
+ log.debug(destroyLog);
- // Remove it
- i.remove();
- userInstance.instance = null;
- session.delete(userInstance);
- }
+ // Perform destruction
+ List failures = portletInvoker.destroyClones(toDestroy);
- // Destroy the state only if it is not a producer offered portlet
- if (instance.modifiable)
+ // Log failures if any
+ if (failures.size() > 0)
{
- String portletId = instance.getPortletRef();
- try
+ StringBuffer failureLog = new StringBuffer("Some portlet were not properly destroyed for instance=").
+ append(instance.getInstanceId()).
+ append(" [");
+ for (Iterator i = failures.iterator(); i.hasNext();)
{
- portletInvoker.destroyClone(portletId);
- }
- catch (NoSuchPortletException e)
+ DestroyCloneFailure failure = (DestroyCloneFailure)i.next();
+ failureLog.append(failure.getPortletId());
+ if (i.hasNext())
{
- e.printStackTrace();
+ failureLog.append(',');
}
- catch (InvokerUnavailableException e)
- {
- e.printStackTrace();
}
+ failureLog.append(']');
+ log.debug(failureLog);
+ }
+
+ // Destroy the user instances
+ for (Iterator i = userInstances.iterator(); i.hasNext();)
+ {
+ UserInstance userInstance = (UserInstance)i.next();
+ i.remove();
+ userInstance.instance = null;
+ session.delete(userInstance);
}
// Delete instance
More information about the jboss-cvs-commits
mailing list