You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2005/05/19 17:46:46 UTC

svn commit: r170949 - /lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Paste.java

Author: andreas
Date: Thu May 19 08:46:46 2005
New Revision: 170949

URL: http://svn.apache.org/viewcvs?rev=170949&view=rev
Log:
fixed locking in paste usecase

Modified:
    lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Paste.java

Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Paste.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Paste.java?rev=170949&r1=170948&r2=170949&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Paste.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Paste.java Thu May 19 08:46:46 2005
@@ -25,6 +25,8 @@
 import org.apache.lenya.cms.publication.DocumentBuildException;
 import org.apache.lenya.cms.publication.DocumentIdentityMap;
 import org.apache.lenya.cms.publication.DocumentManager;
+import org.apache.lenya.cms.publication.Publication;
+import org.apache.lenya.cms.publication.util.DocumentSet;
 import org.apache.lenya.cms.repository.Node;
 import org.apache.lenya.cms.site.SiteException;
 import org.apache.lenya.cms.site.SiteUtil;
@@ -87,14 +89,28 @@
             nodes.add(siteNode);
 
             Clipboard clipboard = new ClipboardHelper().getClipboard(getContext());
-            if (clipboard.getMethod() == Clipboard.METHOD_CUT) {
-                DocumentIdentityMap identityMap = getDocumentIdentityMap();
-                Document clippedDocument = clipboard.getDocument(identityMap);
-                nodes.addAll(Arrays.asList(clippedDocument.getRepositoryNodes()));
-            }
-
+            DocumentIdentityMap map = getDocumentIdentityMap();
+            Publication pub = getSourceDocument().getPublication();
+            String area = getSourceDocument().getArea();
+            Document clippedDocument = clipboard.getDocument(map);
             Document targetDocument = getTargetDocument();
-            nodes.addAll(Arrays.asList(targetDocument.getRepositoryNodes()));
+
+            String clippedName = clippedDocument.getName();
+            String clippedId = clippedDocument.getId();
+            String clippedBase = clippedId.substring(0, clippedId.length() - clippedName.length());
+
+            String targetBase = getSourceDocument().getId() + "/";
+
+            DocumentSet subsite = SiteUtil.getSubSite(this.manager, clippedDocument);
+            Document[] subsiteDocs = subsite.getDocuments();
+            for (int i = 0; i < subsiteDocs.length; i++) {
+                if (clipboard.getMethod() == Clipboard.METHOD_CUT) {
+                    nodes.addAll(Arrays.asList(subsiteDocs[i].getRepositoryNodes()));
+                }
+                String id = subsiteDocs[i].getId().substring(clippedBase.length());
+                Document targetSubsiteDoc = map.get(pub, area, targetBase + id, subsiteDocs[i].getLanguage());
+                nodes.addAll(Arrays.asList(targetSubsiteDoc.getRepositoryNodes()));
+            }
 
         } catch (Exception e) {
             throw new UsecaseException(e);
@@ -147,16 +163,6 @@
                 targetArea,
                 potentialDocumentId,
                 language);
-        DocumentManager documentManager = null;
-        Document availableDocument = null;
-        try {
-            documentManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
-            availableDocument = SiteUtil.getAvailableDocument(this.manager, potentialDocument);
-        } finally {
-            if (documentManager != null) {
-                this.manager.release(documentManager);
-            }
-        }
-        return availableDocument;
+        return SiteUtil.getAvailableDocument(this.manager, potentialDocument);
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org