You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by jw...@apache.org on 2005/05/12 18:24:50 UTC
svn commit: r169842 - in /lenya/trunk/src/java/org/apache/lenya/cms:
publication/DefaultResourcesManager.java publication/ResourcesManager.java
site/usecases/Assets.java usecase/AbstractUsecase.java
Author: jwkaltz
Date: Thu May 12 09:24:48 2005
New Revision: 169842
URL: http://svn.apache.org/viewcvs?rev=169842&view=rev
Log:
fix deleting asset usecase
Modified:
lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultResourcesManager.java
lenya/trunk/src/java/org/apache/lenya/cms/publication/ResourcesManager.java
lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Assets.java
lenya/trunk/src/java/org/apache/lenya/cms/usecase/AbstractUsecase.java
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultResourcesManager.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultResourcesManager.java?rev=169842&r1=169841&r2=169842&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultResourcesManager.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultResourcesManager.java Thu May 12 09:24:48 2005
@@ -355,17 +355,40 @@
}
/**
- * @see org.apache.lenya.cms.publication.ResourcesManager#deleteResource(org.apache.lenya.cms.publication.Document,
+ * @see org.apache.lenya.cms.publication.ResourcesManager#getResource(org.apache.lenya.cms.publication.Document,
* java.lang.String)
*/
- public void deleteResource(Document document, String name) throws Exception {
+ public Resource getResource(Document document, String resourceName) {
+ Resource theResource = null;
Resource[] resources = getResources(document);
for (int i = 0; i < resources.length; i++) {
- if (resources[i].getName().equals(name)) {
- SourceUtil.delete(resources[i].getMetaSourceURI(), this.manager);
- SourceUtil.delete(resources[i].getSourceURI(), this.manager);
+ if (resources[i].getName().equals(resourceName)) {
+ theResource = resources[i];
+ break;
}
}
+ return theResource;
+ }
+
+ /**
+ * @see org.apache.lenya.cms.publication.ResourcesManager#deleteResource(org.apache.lenya.cms.publication.Resource)
+ */
+ public void deleteResource(Resource theResource) throws Exception {
+
+ SourceUtil.delete(theResource.getMetaSourceURI(), this.manager);
+ SourceUtil.delete(theResource.getSourceURI(), this.manager);
+ }
+
+ /**
+ * @see org.apache.lenya.cms.publication.ResourcesManager#deleteResource(org.apache.lenya.cms.publication.Document,
+ * java.lang.String)
+ */
+ public void deleteResource(Document document, String name) throws Exception {
+ Resource theResource = getResource(document, name);
+ if (theResource == null)
+ throw new Exception("no such resource [" + name + "] exists for document [ " + document.getId() + "]");
+
+ deleteResource(theResource);
}
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/ResourcesManager.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/publication/ResourcesManager.java?rev=169842&r1=169841&r2=169842&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/ResourcesManager.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/ResourcesManager.java Thu May 12 09:24:48 2005
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2004 The Apache Software Foundation
+ * Copyright 1999-2005 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -15,8 +15,6 @@
*
*/
-/* $Id$ */
-
package org.apache.lenya.cms.publication;
import java.util.Map;
@@ -25,6 +23,7 @@
/**
* Manager for resources of a CMS document.
+ * @version $Id$
*/
public interface ResourcesManager {
@@ -87,6 +86,13 @@
void addResource(Document document, Part part, Map metadata) throws Exception;
/**
+ * Delete a resource.
+ * @param resource The resource.
+ * @throws Exception if an error occurs
+ */
+ void deleteResource(Resource resource) throws Exception;
+
+ /**
* Delete a resource from the document.
* @param document The document.
* @param name The filename of the resource.
@@ -122,5 +128,13 @@
* @throws Exception when something went wrong.
*/
void copyResources(Document sourceDocument, Document destinationDocument) throws Exception;
+
+ /**
+ * Retrieve a resource
+ * @param document The document the resource belongs to
+ * @param resourceName The name of the resource
+ * @return the resource, or null if no such resource exists.
+ */
+ Resource getResource(Document document, String resourceName);
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Assets.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Assets.java?rev=169842&r1=169841&r2=169842&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Assets.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Assets.java Thu May 12 09:24:48 2005
@@ -16,7 +16,10 @@
*/
package org.apache.lenya.cms.site.usecases;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
+
import java.util.HashMap;
import java.util.Map;
import org.apache.cocoon.servlet.multipart.Part;
@@ -25,6 +28,7 @@
import org.apache.lenya.cms.publication.ResourcesManager;
import org.apache.lenya.cms.site.usecases.SiteUsecase;
import org.apache.lenya.cms.usecase.UsecaseException;
+import org.apache.lenya.transaction.Transactionable;
/**
* Usecase to add Assets to a resource.
@@ -96,11 +100,26 @@
String assetName = getParameterAsString("delete");
ResourcesManager resourcesManager = null;
try {
- resourcesManager = (ResourcesManager) this.manager.lookup(ResourcesManager.ROLE);
- resourcesManager.deleteResource(getSourceDocument(), assetName);
+
+ // Retrieve the resource instance via the ResourcesManager
+ resourcesManager = (ResourcesManager)
+ this.manager.lookup(ResourcesManager.ROLE);
+ Resource theResource =
+ resourcesManager.getResource(getSourceDocument(), assetName);
+ if (theResource == null)
+ throw new Exception("no such resource [" + assetName + "] exists for document [ " + getSourceDocument().getId() + "]");
+
+ // Lock the resource nodes
+ List nodes = new ArrayList();
+ nodes.addAll(Arrays.asList(theResource.getRepositoryNodes()));
+ lockInvolvedObjects((Transactionable[])nodes.toArray(new Transactionable[nodes.size()]));
+
+ // Delete the resource
+ resourcesManager.deleteResource(theResource);
+
} catch (final Exception e) {
- getLogger().error("The resource could not be added: ", e);
- addErrorMessage("The resource could not be added (see log files for details).");
+ getLogger().error("The resource could not be deleted: ", e);
+ addErrorMessage("The resource could not be deleted (see log files for details).");
} finally {
if (resourcesManager != null) {
this.manager.release(resourcesManager);
Modified: lenya/trunk/src/java/org/apache/lenya/cms/usecase/AbstractUsecase.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/usecase/AbstractUsecase.java?rev=169842&r1=169841&r2=169842&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/usecase/AbstractUsecase.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/usecase/AbstractUsecase.java Thu May 12 09:24:48 2005
@@ -603,8 +603,23 @@
* @see org.apache.lenya.cms.usecase.Usecase#lockInvolvedObjects()
*/
public final void lockInvolvedObjects() throws UsecaseException {
+ lockInvolvedObjects(getObjectsToLock());
+ }
+
+ /**
+ * Lock the objects, for example when you need to change them
+ * (for example, delete). If you know when entering the usecase
+ * what these objects are, you do not need to call this, the
+ * framework will take of it if you implement getObjectsToLock().
+ * If you do not know in advance what the objects are, you can
+ * call this method explicitly when appropriate.
+ *
+ * @param objects the transactionable objects to lock
+ * @see #lockInvolvedObjects()
+ * @see #getObjectsToLock()
+ */
+ public final void lockInvolvedObjects(Transactionable[] objects) throws UsecaseException {
try {
- Transactionable[] objects = getObjectsToLock();
boolean canExecute = true;
for (int i = 0; i < objects.length; i++) {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org