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